package com.guigu.erp.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.guigu.erp.dto.DesignFileCountDto;
import com.guigu.erp.pojo.DesignFile;
import com.guigu.erp.utils.PageUtils;
import com.guigu.erp.vo.DesignFileVo;

import java.util.List;
import java.util.Map;

public interface DesignFileService extends IService<DesignFile> {
    /**
     * 产品设计 -- 产品档案查询(带条件分页)
     * @param vo 查询条件
     * @param pageNo 当前页
     * @param pageSize 每页显示的页数
     * @return
     */
    PageUtils<DesignFile> page(DesignFileVo vo,int pageNo,int pageSize);

    /**
     * 获取Id最大产品档案的产品编号的流水号
     * @return
     */
    String getMaxFlowNumber();

    /**
     * 获取产品档案复核未审核的数量
     * @return
     */
    int getCount();


    /**
     * 产品设计 -- 查询未制定物料组成的数据(带条件)
     * @param vo 查询条件
     * @param pageNo 当前页
     * @param pageSize 每页显示的页数
     * @return
     */
    PageUtils<DesignFile> getUnMakeMaterial(DesignFileVo vo, Integer pageNo, Integer pageSize);

    /**
     * 产品设计  -- 查询产品档案为物料的数据
     * @param vo 查询条件
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageUtils<DesignFile> getMakematerialList(DesignFileVo vo, Integer pageNo, Integer pageSize);

    /**
     * 查询未制定生产工序的产品档案信息(带条件)
     * @param vo 查询条件
     * @param pageNo 当前页
     * @param pageSize 每页显示的页数
     * @return
     */
    PageUtils<DesignFile> getUnMakeProcessList(DesignFileVo vo,Integer pageNo,Integer pageSize);

    /**
     * 查询未制定安全库存配置的产品档案信息
     * @param vo
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageUtils<DesignFile> getUnMakeSecurityConfiguration(DesignFileVo vo,Integer pageNo,Integer pageSize);

    /**
     * 查询已审核通过的产品档案
     * @param vo
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageUtils<DesignFile> getSecurityConfiguration(DesignFileVo vo,Integer pageNo,Integer pageSize);

    /**
     * 查询已审核通过的产品档案(商品)
     * @param vo
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageUtils<DesignFile> getProductsIsCommodity(DesignFileVo vo,Integer pageNo,Integer pageSize);


    List<DesignFileCountDto> countByFactoryName();
}
